home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-07-01 | 3.1 KB | 155 lines | [TEXT/CWIE] |
- /******************** ***********************/
- //
- // Player PRO 4.5x -- Usefull functions for sound file import/export
- //
- // Version 3.0
- //
- // To use with PlayerPRO & CodeWarrior ( current vers 8)
- //
- // Antoine ROSSET
- // 16 Tranchees
- // 1206 GENEVA
- // SWITZERLAND
- //
- // FAX: (+41 22) 346 11 97
- // Compuserve: 100277,164
- // Phone: (+41 79) 203 74 62
- // Internet: rosset@dial.eunet.ch
- /******************** ***********************/
-
- #include "PPPlug.h"
- #include "sound.h"
-
- void ConvertInstrumentIn( register Byte *tempPtr, register long sSize)
- {
- register Byte val = 0x80;
-
- while( sSize > 0)
- {
- sSize--;
- *(tempPtr + sSize) -= val;
- }
- }
-
- Ptr MyExp1to3( Ptr sound, unsigned long numSampleFrames)
- {
- long i;
- Ptr inState, outState;
- Ptr outBuffer;
-
- outState = NewPtrClear( 128);
- inState = NewPtrClear( 128);
- if( inState == nil) return 0L;
-
- outBuffer = NewPtr( numSampleFrames*6);
- if( outBuffer == nil) return 0L;
-
- Exp1to3( sound, outBuffer, numSampleFrames, (StateBlockPtr) inState, (StateBlockPtr) outState, 1, 1);
-
- DisposPtr( sound);
- sound = outBuffer;
-
- DisposPtr( inState);
- DisposPtr( outState);
-
- return sound;
- }
-
- Ptr MyExp1to6( Ptr sound, unsigned long numSampleFrames)
- {
- long i;
- Ptr inState, outState;
- Ptr outBuffer;
-
- outState = NewPtrClear( 128);
- inState = NewPtrClear( 128);
- if( inState == nil) return 0L;
-
- outBuffer = NewPtr( numSampleFrames * 6);
- if( outBuffer == nil) return 0L;
-
- Exp1to6( sound, outBuffer, numSampleFrames, (StateBlockPtr) inState, (StateBlockPtr) outState, 1, 1);
-
- DisposPtr( sound);
- sound = outBuffer;
-
- DisposPtr( inState);
- DisposPtr( outState);
-
- return sound;
- }
-
- sData * MADCreateSample()
- {
- sData *curData;
-
- curData = (sData*) NewPtrClear( sizeof( sData));
-
- curData->size = 0L;
- curData->loopBeg = 0L;
- curData->loopSize = 0L;
- curData->vol = MAX_VOLUME;
- curData->c2spd = NOFINETUNE;
- curData->loopType = 0;
- curData->amp = 8;
- curData->panning = 0;
- curData->relNote = 0;
- curData->data = 0L;
-
- return curData;
- }
-
- OSErr AddSoundToMAD( Ptr theSound,
- long lS,
- long lE,
- short sS,
- short bFreq,
- unsigned long rate,
- Str255 name,
- InstrData *InsHeader, // Ptr on instrument header
- sData **sample, // Ptr on samples data
- short *sampleID)
- {
- long inOutBytes, i;
- sData *curData;
-
- if( theSound == 0L) return MADParametersErr;
-
- if( *sampleID > MAXSAMPLE) return MADParametersErr;
-
- inOutBytes = GetPtrSize( theSound);
-
- ///////
-
- if( *sampleID >= 0) // replace this sample
- {
- curData = sample[ *sampleID];
- }
- else // add a sample : why? because *sampleID == -1
- {
- *sampleID = InsHeader->numSamples;
- InsHeader->numSamples++;
-
- curData = sample[ *sampleID] = MADCreateSample();
- }
-
- if( curData->data != 0L) DisposPtr( curData->data);
- curData->data = theSound;
-
- curData->size = inOutBytes;
- curData->loopBeg = lS;
- curData->loopSize = lE - lS;
- curData->vol = 64;
- curData->amp = sS;
- curData->c2spd = rate >> 16L;
- curData->relNote = 60 - bFreq;
-
- for(i=0; i<32; i++)
- {
- if( i < name[ 0]) curData->name[i] = name[i+1];
- else curData->name[i] = '\0';
- }
-
- return noErr;
- }
-